package chapter04;

public class Java21_Object_Abstract {
    public static void main(String[] args) {
        // TODO 抽象
        /*
            1.抽象类：不完整的类 语法：【abstract class 类名】
            2.抽象方法：只有声明，没有实现 语法：【abstract 返回的类型 方法名(参数)】
            在面向对象中：
            1.分析问题：对象（具体）=>类（抽象）
            2.编写代码：类（抽象）=>对象（具体）
         */
        // 抽象类无法构建对象，∵类不完整
        // Person21 person21 = new Person21(); 报错：'Person21' is abstract; cannot be instantiated
        // 如果一个类中含有抽象方法，那么这个类是抽象类
        // 如果一个类是抽象类，它的方法不一定是抽象方法
        // 抽象类无法直接构建对象，可以通过子类间接构建对象
        // 如果抽象类中含有抽象方法，那么子类继承抽象类时需要重写抽象方法，将方法补充完整
        // abstract不能与final、class同时使用
        Chinese21 chinese21 = new Chinese21();
        chinese21.eat();

    }
}
abstract class Person21 {
// final abstract class Person21 {
    public abstract void eat();
    // public final abstract void eat();
    public void sleep() {
    }
}
class Chinese21 extends Person21 {

    public void eat(){
        System.out.println("开始吃饭");
    }

}